﻿using System;
using System.Threading.Tasks;
using XUCore.WeChat.Net.ServerMessages.From;
using XUCore.WeChat.Net.ServerMessages.To;

namespace XUCore.WeChat.Enterprise.Net.ServerMessages
{
    /// <summary>
    /// 企业微信服务消息、事件处理器
    /// </summary>
    public interface IEnterpriseWeChatEventHandler
    {
        /// <summary>
        /// 自定义序列化事件，方便定制接入其他事件（这个部分的作用在于XML序列化成对象并返回到Execute方法里执行对应的操作）
        /// </summary>
        /// <param name="suiteId">第三方应用id或者代开发应用模板id。第三方应用以ww或wx开头应用id（对应于旧的以tj开头的套件id）；代开发应用以dk开头</param>
        /// <param name="corpId"></param>
        /// <param name="agentId"></param>
        /// <param name="fromEvent">事件类型</param>
        /// <param name="xmlStr"></param>
        /// <returns></returns>
        Task<IFromMessage> ExecuteEventHandler(string suiteId, string corpId, int agentId, string fromEvent, string xmlStr);
        /// <summary>
        /// 处理服务器消息事件
        /// </summary>
        /// <param name="suiteId">第三方应用id或者代开发应用模板id。第三方应用以ww或wx开头应用id（对应于旧的以tj开头的套件id）；代开发应用以dk开头</param>
        /// <param name="corpId"></param>
        /// <param name="agentId"></param>
        /// <param name="fromMessage"></param>
        /// <returns></returns>
        Task<ToMessageBase> Execute(string suiteId, string corpId, int agentId, IFromMessage fromMessage);
    }
}